package com.zz.ecommerce.pojo;

import com.zz.bundles.cache.dict.DictTag;
import com.zz.ecommerce.common.constants.DictConstants;
import com.zz.ecommerce.utils.SqlType;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 清单表头(正式)
 */
public class CbecElist implements Serializable {

    private static final long serialVersionUID = 587127735450129303L;

    /**
     * 唯一主键
     */
    private String id;

    /**
     * 企业内部编号。企业内部的清单编号
     */
    private String copNo;

    /**
     * 预录入编号（B+8位年月日+9位流水号）。电子口岸的清单编号（B+8位年月日+9位流水号）
     */
    private String preNo;

    /**
     * 担保企业编号（电商企业或平台，申报企业）
     */
    private String assureCode;

    /**
     * 账册编号。保税模式填写具体账号，用于保税进口业务在特殊区域辅助系统记账（二线出区核减）
     */
    private String bookNo;

    /**
     * 订单编号。电商平台的原始订单编号
     */
    private String orderNo;

    /**
     * 电商平台代码。电商平台的海关备案编码（18位）
     */
    private String ebpCode;

    /**
     * 电商平台名称。电商平台的海关备案名称
     */
    private String ebpName;

    /**
     * 电商企业代码。电商企业的海关备案编码(18位)
     */
    private String ebcCode;

    /**
     * 电商企业名称。电商企业的海关备案名称
     */
    private String ebcName;

    /**
     * 物流运单编号。物流企业的运单包裹面单号
     */
    private String logisticsNo;

    /**
     * 物流企业代码。物流企业的海关备案编码（18位）
     */
    private String logisticsCode;

    /**
     * 物流企业名称。物流企业的海关备案名称
     */
    private String logisticsName;

    /**
     * 清单编号
     */
    private String elistNo;

    /**
     * 进出口标记（I-进口,E-出口）
     */
    private String iEFlag;

    /**
     * 申报日期
     */
    @SqlType(type = "date", format = "yyyy-MM-dd", qryStart = "declDateStart", qryEnd = "declDateEnd")
    private String declDate;

    @SqlType(inTable = false, type = "date", format = "yyyy-MM-dd")
    private String declDateStart;

    @SqlType(inTable = false, type = "date", format = "yyyy-MM-dd")
    private String declDateEnd;

    /**
     * 申报口岸代码
     */
    private String customsCode;

    /**
     * 进口口岸代码
     */
    private String portCode;

    /**
     * 进口日期（格式：YYYYMMDD）
     */
    @SqlType(type = "date", format = "yyyy-MM-dd")
    private String iEDate;

    /**
     * 订购人证件类型(1=身份证，2=其他)
     */
    private String buyerIdType;

    /**
     * 订购人证件号码(默认身份证)
     */
    private String buyerId;

    /**
     * 订购人姓名
     */
    private String buyerName;

    /**
     * 订购人电话
     */
    private String consigneePhone;

    /**
     * 订购人地址
     */
    private String consigneeAddr;

    /**
     * 申报企业代码
     */
    private String agentCode;

    /**
     * 申报企业名称
     */
    private String agentName;

    /**
     * 区内企业代码
     */
    private String areaCode;

    /**
     * 区内企业名称
     */
    private String areaName;

    /**
     * 贸易方式。默认为9610/1210,区分保税或一般模式。
     */
    private String tradeMode;

    /**
     * 运输方式代码,海关参数代码
     */
    private String trafMode;

    /**
     * 运输工具编码
     */
    private String trafNo;

    /**
     * 航班航次号
     */
    private String voyageNo;

    /**
     * 提运单号
     */
    private String billNo;

    /**
     * 监管场所代码
     */
    private String loctNo;

    /**
     * 许可证号
     */
    private String licenseNo;

    /**
     * 启运国
     */
    private String country;

    /**
     * 运费
     */
    private BigDecimal freight;

    /**
     * 保费
     */
    private BigDecimal insuredFee;

    /**
     * 币制
     */
    private String currency;

    /**
     * 包装种类代码
     */
    private String wrapType;

    /**
     * 件数
     */
    private Integer packNo;

    /**
     * 毛重（kg）
     */
    private BigDecimal grossWeight;

    /**
     * 净重（kg）
     */
    private BigDecimal netWeight;

    /**
     * 备注
     */
    private String note;

    private String operId;

    private String orgId;

    private String status;

    @SqlType(type = "date", format = "YYYY-MM-DD HH24:MI:SS")
    private String statusTime;

    /**
     * 版本号（默认1.0）
     */
    private String version;

    /**
     * 系统唯一序号（36位  英文字母大写）
     */
    private String guid;

    /**
     * 业务时间,格式:YYYYMMDDhhmmss
     */
    @SqlType(type = "date", format = "yyyy-MM-dd hh24:mi:ss")
    private String appDate;

    /**
     * 接入平台编号
     */
    private String appSenderId;

    /**
     * 最后修改时间
     */
    private Date lastModifyDate;

    /**
     * 创建时间(清单申报时间)
     */
    @SqlType(type = "date", format = "yyyy-MM-dd hh24:mi:ss")
    private String createDate;

    /**
     * 直属关区代码，申报口岸代码前两位+00
     */
    private String districtCustoms;

    /**
     * 税款总额
     */
    private BigDecimal totalTax;

    /**
     * 商品总价
     */
    private BigDecimal totalPrice;

    /**
     * 业务状态 业务状态:1-暂存,2-申报,默认为2
     */
    private String appStatus;

    /**
     * 申报类型:1-新增 2-变更 3-删除,默认为1
     */
    private String appType;

    public String getAppStatus() {
        return this.appStatus;
    }

    public void setAppStatus(final String appStatus) {
        this.appStatus = appStatus;
    }

    public String getAppType() {
        return this.appType;
    }

    public void setAppType(final String appType) {
        this.appType = appType;
    }

    /**
     * @return 唯一主键
     */
    public String getId() {
        return id;
    }

    /**
     * @param id 唯一主键
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * @return 企业内部编号。企业内部的清单编号
     */
    public String getCopNo() {
        return copNo;
    }

    /**
     * @param copNo 企业内部编号。企业内部的清单编号
     */
    public void setCopNo(String copNo) {
        this.copNo = copNo;
    }

    /**
     * @return 预录入编号（B+8位年月日+9位流水号）。电子口岸的清单编号（B+8位年月日+9位流水号）
     */
    public String getPreNo() {
        return preNo;
    }

    /**
     * @param preNo 预录入编号（B+8位年月日+9位流水号）。电子口岸的清单编号（B+8位年月日+9位流水号）
     */
    public void setPreNo(String preNo) {
        this.preNo = preNo;
    }

    /**
     * @return 担保企业编号（电商企业或平台，申报企业）
     */
    public String getAssureCode() {
        return assureCode;
    }

    /**
     * @param assureCode 担保企业编号（电商企业或平台，申报企业）
     */
    public void setAssureCode(String assureCode) {
        this.assureCode = assureCode;
    }

    /**
     * @return 账册编号。保税模式填写具体账号，用于保税进口业务在特殊区域辅助系统记账（二线出区核减）
     */
    public String getBookNo() {
        return bookNo;
    }

    /**
     * @param bookNo 账册编号。保税模式填写具体账号，用于保税进口业务在特殊区域辅助系统记账（二线出区核减）
     */
    public void setBookNo(String bookNo) {
        this.bookNo = bookNo;
    }

    /**
     * @return 订单编号。电商平台的原始订单编号
     */
    public String getOrderNo() {
        return orderNo;
    }

    /**
     * @param orderNo 订单编号。电商平台的原始订单编号
     */
    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }

    /**
     * @return 电商平台代码。电商平台的海关备案编码（18位）
     */
    public String getEbpCode() {
        return ebpCode;
    }

    /**
     * @param ebpCode 电商平台代码。电商平台的海关备案编码（18位）
     */
    public void setEbpCode(String ebpCode) {
        this.ebpCode = ebpCode;
    }

    /**
     * @return 电商平台名称。电商平台的海关备案名称
     */
    public String getEbpName() {
        return ebpName;
    }

    /**
     * @param ebpName 电商平台名称。电商平台的海关备案名称
     */
    public void setEbpName(String ebpName) {
        this.ebpName = ebpName;
    }

    /**
     * @return 电商企业代码。电商企业的海关备案编码(18位)
     */
    public String getEbcCode() {
        return ebcCode;
    }

    /**
     * @param ebcCode 电商企业代码。电商企业的海关备案编码(18位)
     */
    public void setEbcCode(String ebcCode) {
        this.ebcCode = ebcCode;
    }

    /**
     * @return 电商企业名称。电商企业的海关备案名称
     */
    public String getEbcName() {
        return ebcName;
    }

    /**
     * @param ebcName 电商企业名称。电商企业的海关备案名称
     */
    public void setEbcName(String ebcName) {
        this.ebcName = ebcName;
    }

    /**
     * @return 物流运单编号。物流企业的运单包裹面单号
     */
    public String getLogisticsNo() {
        return logisticsNo;
    }

    /**
     * @param logisticsNo 物流运单编号。物流企业的运单包裹面单号
     */
    public void setLogisticsNo(String logisticsNo) {
        this.logisticsNo = logisticsNo;
    }

    /**
     * @return 物流企业代码。物流企业的海关备案编码（18位）
     */
    public String getLogisticsCode() {
        return logisticsCode;
    }

    /**
     * @param logisticsCode 物流企业代码。物流企业的海关备案编码（18位）
     */
    public void setLogisticsCode(String logisticsCode) {
        this.logisticsCode = logisticsCode;
    }

    /**
     * @return 物流企业名称。物流企业的海关备案名称
     */
    public String getLogisticsName() {
        return logisticsName;
    }

    /**
     * @param logisticsName 物流企业名称。物流企业的海关备案名称
     */
    public void setLogisticsName(String logisticsName) {
        this.logisticsName = logisticsName;
    }

    /**
     * @return 清单编号
     */
    public String getElistNo() {
        return elistNo;
    }

    /**
     * @param elistNo 清单编号
     */
    public void setElistNo(String elistNo) {
        this.elistNo = elistNo;
    }

    /**
     * @return 进出口标记（I-进口,E-出口）
     */
    public String getiEFlag() {
        return iEFlag;
    }

    /**
     * @param iEFlag 进出口标记（I-进口,E-出口）
     */
    public void setiEFlag(String iEFlag) {
        this.iEFlag = iEFlag;
    }

    /**
     * @return 申报日期
     */
    public String getDeclDate() {
        return declDate;
    }

    /**
     * @param declDate 申报日期
     */
    public void setDeclDate(String declDate) {
        this.declDate = declDate;
    }

    /**
     * @return 申报口岸代码
     */
    public String getCustomsCode() {
        return customsCode;
    }

    /**
     * @param customsCode 申报口岸代码
     */
    public void setCustomsCode(String customsCode) {
        this.customsCode = customsCode;
    }

    /**
     * @return 进口口岸代码
     */
    public String getPortCode() {
        return portCode;
    }

    /**
     * @param portCode 进口口岸代码
     */
    public void setPortCode(String portCode) {
        this.portCode = portCode;
    }

    /**
     * @return 进口日期（格式：YYYYMMDD）
     */
    public String getiEDate() {
        return iEDate;
    }

    /**
     * @param iEDate 进口日期（格式：YYYYMMDD）
     */
    public void setiEDate(String iEDate) {
        this.iEDate = iEDate;
    }

    /**
     * @return 订购人证件类型(1=身份证，2=其他)
     */
    public String getBuyerIdType() {
        return buyerIdType;
    }

    /**
     * @param buyerIdType 订购人证件类型(1=身份证，2=其他)
     */
    public void setBuyerIdType(String buyerIdType) {
        this.buyerIdType = buyerIdType;
    }

    /**
     * @return 订购人证件号码(默认身份证)
     */
    public String getBuyerId() {
        return buyerId;
    }

    /**
     * @param buyerId 订购人证件号码(默认身份证)
     */
    public void setBuyerId(String buyerId) {
        this.buyerId = buyerId;
    }

    /**
     * @return 订购人姓名
     */
    public String getBuyerName() {
        return buyerName;
    }

    /**
     * @param buyerName 订购人姓名
     */
    public void setBuyerName(String buyerName) {
        this.buyerName = buyerName;
    }

    /**
     * @return 订购人电话
     */
    public String getConsigneePhone() {
        return consigneePhone;
    }

    /**
     * @param consigneePhone 订购人电话
     */
    public void setConsigneePhone(String consigneePhone) {
        this.consigneePhone = consigneePhone;
    }

    /**
     * @return 订购人地址
     */
    public String getConsigneeAddr() {
        return consigneeAddr;
    }

    /**
     * @param consigneeAddr 订购人地址
     */
    public void setConsigneeAddr(String consigneeAddr) {
        this.consigneeAddr = consigneeAddr;
    }

    /**
     * @return 申报企业代码
     */
    public String getAgentCode() {
        return agentCode;
    }

    /**
     * @param agentCode 申报企业代码
     */
    public void setAgentCode(String agentCode) {
        this.agentCode = agentCode;
    }

    /**
     * @return 申报企业名称
     */
    public String getAgentName() {
        return agentName;
    }

    /**
     * @param agentName 申报企业名称
     */
    public void setAgentName(String agentName) {
        this.agentName = agentName;
    }

    /**
     * @return 区内企业代码
     */
    public String getAreaCode() {
        return areaCode;
    }

    /**
     * @param areaCode 区内企业代码
     */
    public void setAreaCode(String areaCode) {
        this.areaCode = areaCode;
    }

    /**
     * @return 区内企业名称
     */
    public String getAreaName() {
        return areaName;
    }

    /**
     * @param areaName 区内企业名称
     */
    public void setAreaName(String areaName) {
        this.areaName = areaName;
    }

    /**
     * @return 贸易方式。默认为9610/1210,区分保税或一般模式。
     */
    public String getTradeMode() {
        return tradeMode;
    }

    /**
     * @param tradeMode 贸易方式。默认为9610/1210,区分保税或一般模式。
     */
    public void setTradeMode(String tradeMode) {
        this.tradeMode = tradeMode;
    }

    /**
     * @return 运输方式代码, 海关参数代码
     */
    public String getTrafMode() {
        return trafMode;
    }

    /**
     * @param trafMode 运输方式代码,海关参数代码
     */
    public void setTrafMode(String trafMode) {
        this.trafMode = trafMode;
    }

    /**
     * @return 运输工具编码
     */
    public String getTrafNo() {
        return trafNo;
    }

    /**
     * @param trafNo 运输工具编码
     */
    public void setTrafNo(String trafNo) {
        this.trafNo = trafNo;
    }

    /**
     * @return 航班航次号
     */
    public String getVoyageNo() {
        return voyageNo;
    }

    /**
     * @param voyageNo 航班航次号
     */
    public void setVoyageNo(String voyageNo) {
        this.voyageNo = voyageNo;
    }

    /**
     * @return 提运单号
     */
    public String getBillNo() {
        return billNo;
    }

    /**
     * @param billNo 提运单号
     */
    public void setBillNo(String billNo) {
        this.billNo = billNo;
    }

    /**
     * @return 监管场所代码
     */
    public String getLoctNo() {
        return loctNo;
    }

    /**
     * @param loctNo 监管场所代码
     */
    public void setLoctNo(String loctNo) {
        this.loctNo = loctNo;
    }

    /**
     * @return 许可证号
     */
    public String getLicenseNo() {
        return licenseNo;
    }

    /**
     * @param licenseNo 许可证号
     */
    public void setLicenseNo(String licenseNo) {
        this.licenseNo = licenseNo;
    }

    /**
     * @return 启运国
     */
    public String getCountry() {
        return country;
    }

    /**
     * @param country 启运国
     */
    public void setCountry(String country) {
        this.country = country;
    }

    /**
     * @return 运费
     */
    public BigDecimal getFreight() {
        return freight;
    }

    /**
     * @param freight 运费
     */
    public void setFreight(BigDecimal freight) {
        this.freight = freight;
    }

    /**
     * @return 保费
     */
    public BigDecimal getInsuredFee() {
        return insuredFee;
    }

    /**
     * @param insuredFee 保费
     */
    public void setInsuredFee(BigDecimal insuredFee) {
        this.insuredFee = insuredFee;
    }

    /**
     * @return 币制
     */
    public String getCurrency() {
        return currency;
    }

    /**
     * @param currency 币制
     */
    public void setCurrency(String currency) {
        this.currency = currency;
    }

    /**
     * @return 包装种类代码
     */
    public String getWrapType() {
        return wrapType;
    }

    /**
     * @param wrapType 包装种类代码
     */
    public void setWrapType(String wrapType) {
        this.wrapType = wrapType;
    }

    /**
     * @return 件数
     */
    public Integer getPackNo() {
        return packNo;
    }

    /**
     * @param packNo 件数
     */
    public void setPackNo(Integer packNo) {
        this.packNo = packNo;
    }

    /**
     * @return 毛重（kg）
     */
    public BigDecimal getGrossWeight() {
        return grossWeight;
    }

    /**
     * @param grossWeight 毛重（kg）
     */
    public void setGrossWeight(BigDecimal grossWeight) {
        this.grossWeight = grossWeight;
    }

    /**
     * @return 净重（kg）
     */
    public BigDecimal getNetWeight() {
        return netWeight;
    }

    /**
     * @param netWeight 净重（kg）
     */
    public void setNetWeight(BigDecimal netWeight) {
        this.netWeight = netWeight;
    }

    /**
     * @return 备注
     */
    public String getNote() {
        return note;
    }

    /**
     * @param note 备注
     */
    public void setNote(String note) {
        this.note = note;
    }

    /**
     * @return 版本号（默认1.0）
     */
    public String getVersion() {
        return version;
    }

    /**
     * @param version 版本号（默认1.0）
     */
    public void setVersion(String version) {
        this.version = version;
    }

    /**
     * @return 系统唯一序号（36位  英文字母大写）
     */
    public String getGuid() {
        return guid;
    }

    /**
     * @param guid 系统唯一序号（36位  英文字母大写）
     */
    public void setGuid(String guid) {
        this.guid = guid;
    }

    /**
     * @return 业务时间, 格式:YYYYMMDDhhmmss
     */
    public String getAppDate() {
        return appDate;
    }

    /**
     * @param appDate 业务时间,格式:YYYYMMDDhhmmss
     */
    public void setAppDate(String appDate) {
        this.appDate = appDate;
    }

    /**
     * @return 接入平台编号
     */
    public String getAppSenderId() {
        return appSenderId;
    }

    /**
     * @param appSenderId 接入平台编号
     */
    public void setAppSenderId(String appSenderId) {
        this.appSenderId = appSenderId;
    }

    /**
     * @return 最后修改时间
     */
    public Date getLastModifyDate() {
        return lastModifyDate;
    }

    /**
     * @param lastModifyDate 最后修改时间
     */
    public void setLastModifyDate(Date lastModifyDate) {
        this.lastModifyDate = lastModifyDate;
    }

    /**
     * @return 创建时间(清单申报时间)
     */
    public String getCreateDate() {
        return createDate;
    }

    /**
     * @param createDate 创建时间(清单申报时间)
     */
    public void setCreateDate(String createDate) {
        this.createDate = createDate;
    }

    /**
     * @return 直属关区代码，申报口岸代码前两位+00
     */
    public String getDistrictCustoms() {
        return districtCustoms;
    }

    /**
     * @param districtCustoms 直属关区代码，申报口岸代码前两位+00
     */
    public void setDistrictCustoms(String districtCustoms) {
        this.districtCustoms = districtCustoms;
    }

    /**
     * @return 税款总额
     */
    public BigDecimal getTotalTax() {
        return totalTax;
    }

    /**
     * @param totalTax 税款总额
     */
    public void setTotalTax(BigDecimal totalTax) {
        this.totalTax = totalTax;
    }

    /**
     * @return 商品总价
     */
    public BigDecimal getTotalPrice() {
        return totalPrice;
    }

    /**
     * @param totalPrice 商品总价
     */
    public void setTotalPrice(BigDecimal totalPrice) {
        this.totalPrice = totalPrice;
    }

    public String getDeclDateStart() {
        return declDateStart;
    }

    public void setDeclDateStart(String declDateStart) {
        this.declDateStart = declDateStart;
    }

    public String getDeclDateEnd() {
        return declDateEnd;
    }

    public void setDeclDateEnd(String declDateEnd) {
        this.declDateEnd = declDateEnd;
    }

    public String getCurrencyDisplay() {
        return DictTag.getCargoParamVal(DictConstants.S_CURRENCY_E, currency, "CODE_C", "NAME_C");
    }

    public String getOperId() {
        return operId;
    }

    public void setOperId(String operId) {
        this.operId = operId;
    }

    public String getOrgId() {
        return orgId;
    }

    public void setOrgId(String orgId) {
        this.orgId = orgId;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getStatusTime() {
        return statusTime;
    }

    public void setStatusTime(String statusTime) {
        this.statusTime = statusTime;
    }
}
